草庐IT

C++:const char * 到 stringstream

全部标签

c++ - 如何在不复制的情况下获取 std::stringstream 的长度

如何获取字符串流的字节长度。stringstream.str().length();会将内容复制到std::string中。我不想复制。或者,如果有人可以建议另一个在内存中工作的iostream,可以传递给另一个ostream,并且可以轻松获得它的大小,我会使用它。 最佳答案 假设你在谈论一个ostringstream它看起来像tellp可能会做你想做的事。 关于c++-如何在不复制的情况下获取std::stringstream的长度,我们在StackOverflow上找到一个类似的问题

c++ - std::stringstream vs std::string 用于连接许多字符串

我知道std::stringstream的优点之一是一个std::istream因此它可以接受来自任何定义operator的类型的输入至std::istream,也来自基元类型。我不会使用operator;相反,我只是要连接许多字符串。是否执行std::stringstream使其比std::string更快用于连接多个字符串? 最佳答案 没有理由期望std::string的附加函数比stringstream的插入函数慢。std::string通常只不过是可能的内存分配/复制加上将数据复制到内存中。stringstream必须处理语

c++ - Qt c++ 聚合 'std::stringstream ss' 类型不完整,无法定义

我的程序中有这个函数可以将整数转换为字符串:QStringStats_Manager::convertInt(intnum){stringstreamss;ss但是当我运行它时,我得到了错误:aggregate'std::stringstreamss'hasincompletetypeandcannotbedefined我不太确定这意味着什么。但是,如果您知道如何修复它或需要更多代码,请发表评论。谢谢。 最佳答案 你可能有一个类的前向声明,但没有包含标题:#include//...QStringStats_Manager::conv

c++ - 不允许不完整的类型 : stringstream

为什么这行会报错Error:Completetypeisnotallowed?stringstreamss; 最佳答案 #include并使用完全限定名称,即std::stringstreamss; 关于c++-不允许不完整的类型:stringstream,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/5781597/

c++ - 如何使用 stringstream 分隔逗号分隔的字符串

这个问题在这里已经有了答案:HowdoIiterateoverthewordsofastring?(82个回答)关闭4年前。我有以下代码:std::stringstr="abcdef,ghi";std::stringstreamss(str);stringtoken;while(ss>>token){printf("%s\n",token.c_str());}输出是:abcdef,ghi所以stringstream::>>操作符可以用空格分隔字符串,但不能用逗号分隔。有没有办法修改上面的代码,才能得到下面的结果?input:"abc,def,ghi"output:abcdefghi

c++ - 为什么包含 std::stringstream 的类的 move 语义会导致编译器错误?

如何使这个简单的类可move?我认为是正确的只会产生一堵错误的墙......#include#include#includeclassmessage{public:message()=default;//Moveconstructormessage(message&&other):stream_(std::move(other.stream_))//Nope{}//Moveassignmentmessage&operator=(message&&other){if(this!=&other){stream_=std::move(other.stream_);//Nope#2}retur

c++ - 为什么包含 std::stringstream 的类的 move 语义会导致编译器错误?

如何使这个简单的类可move?我认为是正确的只会产生一堵错误的墙......#include#include#includeclassmessage{public:message()=default;//Moveconstructormessage(message&&other):stream_(std::move(other.stream_))//Nope{}//Moveassignmentmessage&operator=(message&&other){if(this!=&other){stream_=std::move(other.stream_);//Nope#2}retur

c++ - stringstream、string 和 char* 转换混淆

我的问题可以归结为,从stringstream.str().c_str()返回的字符串在哪里存在内存中,为什么不能将它分配给constchar*?这个代码示例将比我解释得更好#include#include#includeusingnamespacestd;intmain(){stringstreamss("thisisastring\n");stringstr(ss.str());constchar*cstr1=str.c_str();constchar*cstr2=ss.str().c_str();coutstringstream.str().c_str()可以分配给constch

c++ - 如何测试 stringstream operator>> 是否解析了错误的类型并跳过它

我有兴趣讨论使用stringstream解析具有多种类型的行的方法。我将首先查看以下行:"2.8321.3067nana1.678"现在让我们假设我有一个包含多个strings和doubles的长行。解决这个问题的明显方法是对字符串进行标记,然后检查每个字符串的转换。我有兴趣跳过第二步并直接使用stringstream来查找数字。我想出一个解决这个问题的好方法是通读字符串并检查failbit是否已设置,如果我尝试将字符串解析为double值,它将被设置。假设我有以下代码:stringa("2.8321.3067nana1.678");stringstreamparser;parser.

c++ - 如何测试 stringstream operator>> 是否解析了错误的类型并跳过它

我有兴趣讨论使用stringstream解析具有多种类型的行的方法。我将首先查看以下行:"2.8321.3067nana1.678"现在让我们假设我有一个包含多个strings和doubles的长行。解决这个问题的明显方法是对字符串进行标记,然后检查每个字符串的转换。我有兴趣跳过第二步并直接使用stringstream来查找数字。我想出一个解决这个问题的好方法是通读字符串并检查failbit是否已设置,如果我尝试将字符串解析为double值,它将被设置。假设我有以下代码:stringa("2.8321.3067nana1.678");stringstreamparser;parser.